package com.bwie.feginclient;

import com.bwie.feginclient.impl.UserFeginClientImpl;
import com.bwie.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

//调用用户微服务的Fegin客户端接口类--伪装成springmvc的controller
//基本：指定要调用的服务的名字id
//@FeignClient("springclouddemo-user")
//@FeignClient(value="springclouddemo-user")
//@FeignClient(name="springclouddemo-user"
//        //加入前缀
//        ,path = "/user")
//@FeignClient(value="${bobohost.userservicename}"
//        //加入前缀
//        ,path = "/user")

//                      用户服务的名字  就是user的名字（被调用的 or  客户端）
@FeignClient(value="${bobohost.userservicename}"
        //加入前缀
        ,path = "/user"
        //一旦fegin远程调用有异常或超时等，则会降级为本地的调用实现。--熔断了

        //如果异常或者超时进入这个类中
,fallback = UserFeginClientImpl.class)
public interface UserFeginClient {


    //发起get请求
    //fegin自动帮我们拼接处请求地址，并发出请求：http://springclouddemo-user//user/111
//    @GetMapping("/user/{id}")
    //如果不加前面的path 则下面增加/user/{id}
    @GetMapping("/{id}")
    //fegin熔断里面是实现中配置必须配置名字
    User findUserByUserId(@PathVariable("id") String id);

}
